package com.ruan.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


//前后端分离允许跨域访问
//当前端应用部署在一个域名上，而后端 API 服务部署在另一个域名上时，
// 前端就会面临跨域访问的问题。通过配置 CORS，
// 后端服务可以允许特定的域名或所有域名来访问其 API，从而解决跨域访问的问题
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
//在 Web 安全模型中，浏览器会实施同源策略（Same-Origin Policy），
// 该策略要求网页中加载的 JavaScript 代码只能访问与其来源相同的资源。
// 这意味着如果 JavaScript 代码来自一个源，它只能访问同一源的资源，
// 而无法直接访问其他源的资源。

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        //设置允许跨域的路径
        registry.addMapping("/**")
                //设置允许跨域请求的域名
                .allowedOriginPatterns("*")
                //是否允许证书
                .allowCredentials(true)
                //设置允许证书的方法
                .allowedMethods("GET","POST","DELETE","PUT")
                //设置允许的header属性
                .allowedHeaders("*")
                //设置允许跨域的时间
                .maxAge(3600);
    }
//服务器告知客户端，允许来自任意域名的跨域请求，允许发送身份凭证，允许特定的请求方法和请求头属性，
// 并设置预检请求的缓存时间为一小时。这样客户端就可以在跨域访问时遵循这些规则，从而实现跨域资源共享
}
